import axios from 'axios'
import {ElMessage} from "element-plus";
import{useUserStore} from "@/stores/user.js";
import router from "@/router/index.js";

const baseURL = 'http://localhost:9999/api'
const userStore = useUserStore();

const instance = axios.create({
    // TODO 1. 基础地址，超时时间
    baseURL,
    timeout: 100000
})

const loginAndRegisterPaths = ['user/login', 'user/register'];

// 添加请求拦截器
instance.interceptors.request.use((config) => {
    // 在发送请求之前做些什么
    console.log(config.url)
    if (loginAndRegisterPaths.indexOf(config.url) !== -1) {
        // 如果是登录或注册请求，不携带token
        return config;
    }else{
        // TODO 2. 携带token
        config.headers['zhb'] = userStore.token;
        // config.headers.Authorization = `Bearer ${token}`;
        return config;
    }

}, (error) => {

    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use((response) => {
    // 对响应数据做点什么
    // TODO 3. 处理业务失败
    // TODO 4. 摘取核心响应数据

    if (response?.data?.code === 0) {
    } else {
        ElMessage.error(response.data.message)
    }
    console.log()
    return response;
}, (error) => {

    console.log("我是异常码")
    console.log( error.request)
    console.log( error.request.status)
    if (error.request.status === 401){
        // 对响应错误做点什么
        // TODO 5. 处理401错误
        console.log('对请求错误做些什么')
        userStore.clearUser();
        userStore.clearToken();
        router.push('login')
    }

    return Promise.reject(error);
});


export default instance
export {baseURL}
